@echo off
:: 强制设置代码页为 UTF-8（解决中文乱码，必须放在脚本最开头）
chcp 65001 >nul 2>&1
:: 启用延迟环境变量扩展（否则循环中无法获取动态变量值）
setlocal enabledelayedexpansion

:: 定义镜像名称和对应路径（每行一个，用逗号分隔名称和路径）
set "images[0]=auth-server,cloud-iaas/auth-server/"
set "images[1]=gateway-server,cloud-iaas/gateway-server/"
set "images[2]=manager-service,mall-business/manager-service/"
set "images[3]=member-service,mall-business/member-service/"
set "images[4]=product-service,mall-business/product-service/"
set "images[5]=search-service,mall-business/search-service/"
set "images[6]=store-service,mall-business/store-service/"
set "images[7]=message-service,mall-business/message-service/"
set "images[8]=cart-service,mall-business/cart-service/"
set "images[9]=order-service,mall-business/order-service/"

:: 先检查 Docker 是否可用
docker --version >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo ❌ 未找到 Docker 或 Docker 未启动！
    echo 请先启动 Docker Desktop，等待服务就绪后再运行脚本。
    echo.
    pause
    exit /b 1
)

:: 循环处理每个镜像
for /l %%i in (0,1,9) do (
    :: 拆分镜像名称和路径（tokens=1,2 表示按逗号分割取第1、2段）
    for /f "tokens=1,2 delims=," %%a in ("!images[%%i]!") do (
        set "imageName=%%a"
        set "imagePath=%%b"
    )

    :: 打印当前操作（中文正常显示）
    echo.
    echo ==============================
    echo 正在处理镜像：!imageName!
    echo 镜像路径：!imagePath!
    echo ==============================

    :: 删除原有镜像（忽略不存在的错误，屏蔽多余输出）
    docker rmi -f !imageName! >nul 2>&1
    if !errorlevel! equ 0 (
        echo ✅ 已删除原有镜像：!imageName!
    ) else (
        echo ℹ️  镜像 !imageName! 不存在，跳过删除
    )

    :: 构建新镜像（核心命令，确保路径正确）
    echo 🚀 开始构建镜像：!imageName!
    docker build -t !imageName! "!imagePath!"

    :: 检查构建结果
    if !errorlevel! equ 0 (
        echo ✅ 镜像 !imageName! 构建成功！
    ) else (
        echo ❌ 镜像 !imageName! 构建失败！
        echo 原因：可能是路径错误、Dockerfile 缺失或构建命令异常。
        pause
        exit /b !errorlevel!
    )
)

echo.
echo ==============================
echo 🎉 所有镜像构建完成！
echo ==============================
pause
endlocal
